package com.huazi.www.drug.drugz.service;

import com.alibaba.fastjson.JSONObject;
import com.huazi.www.drug.drugz.enity.Drug;
import com.huazi.www.drug.drugz.enity.DrugStock;
import com.huazi.www.drug.drugz.enity.Medicate;


import java.util.Date;
import java.util.List;

/**
 * 业务逻辑
 */
public interface DrugService {

    /**
     * 下拉框的初始化
     *
     * @return 药品编号  药品名称
     */
    List<Drug> list();

    /**
     * 检查库存状态
     *
     * @return 药品集合
     */
    List<Drug> drugs();

    /**
     * 根据药品编号查询价格  以弃用
     *
     * @param id 药品编号
     * @return 价格
     */
//    double price(int id);

    /**
     * 新增库存申请
     *
     * @param medicate 增加库存
     * @return true 新增申请成功
     */
    boolean inStore(Medicate medicate);

    /**
     * 新增药品申请
     *
     * @param medicate 新增药品
     * @return true 新增申请成功
     */
    boolean addDrug(Medicate medicate);

    /**
     * 返回json对象  分页
     *
     * @param xuTime      //用户选择时间段
     * @param type        //申请类型
     * @param pageSize    //页大小
     * @param currentPage //页码
     * @return json对象
     */
    JSONObject selPage(int xuTime, int type, int pageSize, int currentPage);

    /**
     * 返回json对象  分页
     *
     * @param drugName    药品名称
     * @param drugType    药品类型
     * @param pageSize    页大小
     * @param currentPage 页码
     * @return json对象
     */
    JSONObject selPage(String drugName, int drugType, int pageSize, int currentPage);

    /**
     * 药品管理
     *
     * @param medicate 申请记录
     * @return 0：失败  1：添加库存成功  2：新增药品成功
     */
    int store(Medicate medicate);

    /**
     * 单独修改药品属性
     *
     * @param drugID    药品编号
     * @param drugField 药品字段
     * @param value     字段属性
     * @return true 修改成功
     */
    boolean updDrug(int drugID, String drugField, String value);

    /**
     * 药品库存
     *
     * @param list 药品对象集合
     * @param date 入库时间
     * @return 入库的数量
     */
    int drugStork(List<DrugStock> list, Date date);

    /**
     * 根据时间查询同一批药品
     *
     * @param date 时间
     * @return 库存药品集合
     */
    List<DrugStock> list(String date);
}
